package org.shx.springboot.ollama.ai.service;

import org.shx.springboot.ollama.ai.domain.FileInfo;
import org.springframework.ai.document.Document;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Optional;

public interface DocumentService {
    /**
     * 上传文件
     * @param file
     * @return
     */
    public List<String> processDocument(MultipartFile file);

    /**
     * 删除本地存的文件 和elk的文件
     * @param documentIds
     */
    public void deleteFile(String documentIds);
    // 查询本地存的所有文件信息
    public List<FileInfo> getAllFileInfos();
    /**
     * 使用新客户端查询 Elasticsearch 所有文档ID
     */
    public List<String> getAllDocumentIds();
    /**
     * 删除Elasticsearch中所有文档
     */
    public void deleteAllDocuments();
    /**
     * Elasticsearch
     * 根据查询文本搜索相关文档（全文搜索）
     * @param query 查询文本
     * @param topK 最多返回数量
     * @return 匹配的文档列表
     */
    public List<Document> searchDocumentsByText(String query, int topK);
    /**
     * Elasticsearch
     * 根据文档ID查询具体内容
     * @param documentId 文档ID
     * @return 文档对象（Optional包装，不存在则为空）
     */
    public Optional<Document> getDocumentById(String documentId);
}
